#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os

class Config:
    # 基础配置
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    DATA_DIR = os.path.join(BASE_DIR, 'dataset')
    OUTPUT_DIR = os.path.join(BASE_DIR, 'results')
    MODEL_PATH = '/mnt/ssd/jsj/models/models/Qwen/Qwen2.5-7B-Instruct'

    # GPU配置
    
    USE_GPU = True
    DEVICE = "cuda:0" # 直接指定要使用的设备，格式为"cuda:N"或"cpu"
    # 以下GPU相关配置已被DEVICE替代
    # GPU_DEVICE_ID = 7
    # AUTO_SELECT_GPU = False
    # GPU_COUNT = 1
    # GPU_MEMORY_THRESHOLD = 10
    BATCH_SIZE = 32

    # 实验配置
    EXPERIMENT_CONFIG = {
        #'context_windows': [4, 6, 'full', 'semantic'],
        'context_windows': ['full'],
    }

    # 结果保存配置
    SAVE_CONFIG = {
        'format': 'json',
        'include_details': True,
        'compress': False
    }
    

    
    # 数据处理配置
    MAX_SAMPLES = None  # 全局最大样本数量，None表示使用全部样本
    
    # 每个实验组的最大样例数配置
    # 键为窗口大小，值为该实验组的最大样例数，None表示不限制
    GROUP_MAX_SAMPLES = {
        2: None,
        4: None,  # 窗口大小为4的实验组最多使用5条数据
        6: None,  # 窗口大小为6的实验组最多使用5条数据
        'full': None,  # 窗口大小为full的实验组最多使用5条数据
        'semantic': 8  # 窗口大小为semantic的实验组最多使用5条数据
    }
    
    # 对比解码配置
    USE_CONTRASTIVE_DECODING = False  # 是否启用对比解码
    CONTRASTIVE_ALPHA = 0.3  # 对比权重参数，控制中性提示词对生成结果的影响程度
    CONTRASTIVE_TOP_K = 40  # 对比解码中的top-k采样参数
    CONTRASTIVE_TEMPERATURE = 0.7  # 对比解码中的温度参数
    
    # 强弱模型对比解码配置
    USE_STRONG_WEAK_CONTRASTIVE = False  # 是否启用强弱模型对比解码
    STRONG_MODEL_PATH = '/mnt/ssd/jsj/models/models/Qwen/Qwen2.5-7B-Instruct'  # 强模型路径
    WEAK_MODEL_PATH = '/mnt/ssd/jsj/models/models/Qwen/Qwen2.5-1.5B-Instruct'  # 弱模型路径
    STRONG_WEAK_ALPHA = 0.5  # 强弱模型对比权重参数

    # GPT-4o-mini API配置
    USE_API_MODEL = False  # 是否使用API模型（而非本地模型）
    API_MODEL_NAME = 'gpt-4o-mini'  # API模型名称
    API_BASE_URL = 'https://api.chatanywhere.tech/v1'  # API基础URL
    API_KEY = 'sk-g1KM5E5V1RfF43FvHnH6daVCdBo5nLIJz345Gh1KTxSYFVK8'  # API密钥，请替换为实际密钥

        # 交互矩阵方法配置
    USE_INTERACTION_MATRIX = False  # 是否使用交互矩阵方法
    INTERACTION_MATRIX_PATH = '/mnt/ssd/jsj/patient/改写/script/interaction_matrix.py'
    
    # 模块化方法配置（顶层字段，供各模块直接读取）
    USE_MODULAR_APPROACH = True  # 是否使用模块化方法
    PERSONA_EXAMPLES_PATH = '/mnt/ssd/jsj/patient/script/method/data/persona_examples.json'
    FACT_EXTRACTION_MODEL = 'local'
    CONFLICT_DETECTION_THRESHOLD = 0.8
    EXAMPLE_RETRIEVAL_TOP_K = 3
    SIMILARITY_THRESHOLD = 0.6
    # Swift LLM 引擎（可选），模块化方法里使用
    USE_SWIFT_ENGINE = True
    SWIFT_MODEL_PATH = '/mnt/ssd/jsj/models/models/ZhipuAI/GLM-4-9B-0414'
    SWIFT_MAX_TOKENS = 1024
    SWIFT_TEMPERATURE = 0.7
    